Amazon Athena Engine Version 3を使用するWork GroupをAWS CDKで作る
こんにちは、CX事業本部 IoT事業部の若槻です。
先日、Amazon Athenaのengine versioningにAthena engine version 3が追加されました。
Version 3では、50以上の新しいSQL関数の追加や、クエリパフォーマンスの改善が行われており、是非とも使ってみたいところです。
そこで今回は、Amazon Athena Engine Version 3を使用するWork GroupをAWS CDKで作る方法を確認してみました。
Work GroupのEngine Versionの指定方法は2種類ある
Athena Work GroupでのEngine Versionの指定方法は、Automatic
とManual
の2種類があります。
Automatic
とした場合は現時点では既定でversion 2が使われますが、今後AWSからの通知があった後にversion 3に自動でアップグレードされるとのことです。
Athena will notify you of your upgrade in the Athena console and through your AWS Health Dashboard. Your engine version will remain on the current version until you receive a notification.
Manual
とした場合はversion 2とversion 3のいずれかが選択できます。推奨はversion 3なんですね。
よって、Amazon Athena Engine Version 3を使用するWork Groupを作りたい場合は、Manualでversion 3を指定すれば良さそうです。
engine version 3を使用するWork Groupを作る
それではAWS CDKでengine version 3を使用するWork Groupを作成してみます。
結論として、selectedEngineVersion
でengine version 3を明示的に指定することにより、Manual
でengine version 3を指定したWork Groupを作成できました。
import { aws_athena, Stack, StackProps } from 'aws-cdk-lib'; import { Construct } from 'constructs'; export class AwsCdkAppStack extends Stack { constructor(scope: Construct, id: string, props?: StackProps) { super(scope, id, props); // engine versionの指定なし new aws_athena.CfnWorkGroup(this, 'workGroup', { name: 'workGroup', }); // engine version 3を明示的に指定 new aws_athena.CfnWorkGroup(this, 'workGroupV3', { name: 'workGroupVersionSpecified', workGroupConfiguration: { engineVersion: { selectedEngineVersion: 'Athena engine version 3', }, }, }); } }
上記スタックをCDK Deployしてリソースを作成します。
作成されたWork Groupをathena get-work-group
コマンドで取得してみます。
バージョンを指定しなかった方は、SelectedEngineVersionがAuto
(Automatic)、EffectiveEngineVersionがAthena engine version 2
となっており、現状でversion 2のEngineが使われるようになっています。
$ aws athena get-work-group --work-group workGroup { "WorkGroup": { "Name": "workGroup", "State": "ENABLED", "Configuration": { "EnforceWorkGroupConfiguration": true, "PublishCloudWatchMetricsEnabled": true, "RequesterPaysEnabled": false, "EngineVersion": { "SelectedEngineVersion": "AUTO", "EffectiveEngineVersion": "Athena engine version 2" } }, "CreationTime": "2022-10-15T22:27:25.515000+09:00" } }
バージョンを明示的に指定した方は、SelectedEngineVersionおよびEffectiveEngineVersionのいずれもAthena engine version 3
となっており、version 3のEngineが使われるようになっています。
$ aws athena get-work-group --work-group workGroupVersionSpecified { "WorkGroup": { "Name": "workGroupVersionSpecified", "State": "ENABLED", "Configuration": { "EnforceWorkGroupConfiguration": true, "PublishCloudWatchMetricsEnabled": false, "RequesterPaysEnabled": false, "EngineVersion": { "SelectedEngineVersion": "Athena engine version 3", "EffectiveEngineVersion": "Athena engine version 3" } }, "CreationTime": "2022-10-15T22:27:38.396000+09:00" } }
一応コンソールで確認してみると、Manual
が選択されています。
EffectiveEngineVersionとSelectedEngineVersion
前述の実装で、「EffectiveEngineVersion」と「SelectedEngineVersion」というプロパティが出てきました。
EffectiveEngineVersionは、現在そのWork Groupで有効なEngine Versionを表します。読み取り専用属性であり、SelectedEngineVersionでAuto
を指定しており自動でアップグレードが行われた場合にこの値が自動で変わるものと思われます。
EffectiveEngineVersion Read only. The engine version on which the query runs. If the user requests a valid engine version other than Auto, the effective engine version is the same as the engine version that the user requested. If the user requests Auto, the effective engine version is chosen by Athena. When a request to update the engine version is made by a CreateWorkGroup or UpdateWorkGroup operation, the EffectiveEngineVersion field is ignored.
SelectedEngineVersionは、既定はAuto
で、version 2またはversion 3を明示的に指定できるようです。
SelectedEngineVersion The engine version requested by the user. Possible values are determined by the output of ListEngineVersions, including Auto. The default is Auto.
ListEngineVersions APIを叩いてみると、現在指定できるのは次の3つのようですね。
$ aws athena list-engine-versions { "EngineVersions": [ { "SelectedEngineVersion": "AUTO" }, { "SelectedEngineVersion": "Athena engine version 2" }, { "SelectedEngineVersion": "Athena engine version 3" } ] }
参考
以上